package com.ylxin.webflux;

/**
 * @author 29048
 * @version V1.0
 * @Project webflux02
 * @Package com.ylxin.webflux.service
 * @Description: Create by 杨立新 @Date 2022/9/22 21:47
 */

import com.ylxin.webflux.pojo.User;
import org.springframework.http.MediaType;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Flux;

/**
 * 客户端
 * 通过手动创建 web客户端 的方式来访问我们的服务端，这里是客户端的代码，与服务端的启动方式无关
 */
public class Client {
    public static void main(String[] args) {
        //调用服务器地址
        WebClient webClient = WebClient.create("http://127.0.0.1:5794");

        //根据 id查询
        String id = "1";
        User userResult = webClient.get().uri("/users/info/{id}",id)
                .accept(MediaType.APPLICATION_JSON).retrieve().bodyToMono(User.class)
                .block();
        System.err.println(userResult.getName());

        //查询所有
        Flux<User> results = webClient.get().uri("/users")
                .accept(MediaType.APPLICATION_JSON).retrieve().bodyToFlux(User.class);

        results.map(stu -> stu.getName())
                .buffer().doOnNext(System.out::println).blockFirst();


    }
}
